package day03;

/*
@Author: 王少杰
@Date: 2025/1/2
@Time: 9:02
@FileName: Demo01.java
@描述:
面向对象
    成员变量与局部变量的差别:
        成员变量是在类中定义的变量。局部变量实在方法里面定义的，方法参数。
        成员变量是对象的一部分，对象创建的时候，成员变量创建。对象销毁时，成员变量才会销毁。成员变量存储在堆内存。
        局部变量，方法被调用时创建，方法调用完成后，局部变量被销毁。局部变量存储在栈内存，更行迭代快。
        成员变量如果没有赋初值，默认使用对应类型的0值赋值给它。局部变量不会自动赋值

        成员变量作用域大。
        局部变量提升为属性:扩大了作用域，增加了生存时间，会占用更多的内存。
*/
public class Demo01 {
    public static void main(String[] args) {
        Student student = new Student(); //创建一个对象
        student.name = "王少杰";//实例.属性名,给属性赋值或者使用属性
        student.age = 18;
        student.height = 170.0f;
        student.weight = 112.5f;
        student.score = 88;
        student.reading("西游记");//没有返回值  实例.方法名
        System.out.println(student.run("操场", 3.0f)); //有返回值的方法
        student.eat(3);
        System.out.println(student.dengji());
        System.out.println(student.name + "本次考试等级为:" + student.dengji1());

    }
}
class Student {
    //属性，成员变量
    String name;
    int age;
    float height;
    float weight;
    double score;
    //方法,reading方法名, String book--->参数列表,参数类型 参数名
    //void 返回值的类型，空 None
    //public 公共，可以在类外方法
    public void reading(String book){
        System.out.println(name + "is reading" + book);
    }

    //String place,float a 参数列表,参数类型 参数名
    //String 返回值的类型
    public String run(String place,float a){
        return name + "在" + place + "跑步,配速每公里耗时" + a;
    }

    public void eat(int a){
        System.out.println(name + "一天吃" + a + "碗饭。");
    }
    //定义了返回值时，每个分支都需要返回
    public char dengji(){
        if (score >= 90){
            return 'A';//char
        } else if (score >= 60) {
            return 'B';
        }else {
            return 'C';
        }
    }

    public String dengji1(){
        if (score >= 90){
            return "A";//string
        } else if (score >= 60) {
            return "B";
        }else {
            return "C";
        }
    }
}